package org.dxy.api.dto.request.workstation;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
 * 创建工位请求DTO
 * @author dxy
 * @createTime 2025/9/4
 */
@Data
public class CreateWorkstationRequestDto {
    /**
     * 工位编码，唯一标识工位（必填）
     */
    @NotBlank(message = "工位编码不能为空")
    @Size(max = 50, message = "工位编码长度不能超过50个字符")
    private String workstationCode;

    /**
     * 工位名称，用于显示和描述（必填）
     */
    @NotBlank(message = "工位名称不能为空")
    @Size(max = 100, message = "工位名称长度不能超过100个字符")
    private String workstationName;

    /**
     * 所属产线ID（必填）
     */
    @NotNull(message = "所属产线不能为空")
    private Long productionLineId;

    /**
     * 工位类型，例如 "MANUAL"（手动）、"AUTOMATIC"（自动）、"SEMI_AUTOMATIC"（半自动）（必填）
     */
    @NotBlank(message = "工位类型不能为空")
    @Size(max = 50, message = "工位类型长度不能超过50个字符")
    private String workstationType;

    /**
     * 工位状态，例如 "IDLE"（空闲）、"RUNNING"（运行中）、"FAULT"（故障）、"MAINTENANCE"（维护中）（可选，默认为空闲）
     */
    private String status;

    /**
     * 产能（每小时），工位的生产能力（可选）
     */
    private Integer capacity;

    /**
     * 工位位置序号，在产线中的位置（可选）
     */
    private Integer position;

    /**
     * 支持的工艺类型（可选，JSON 格式或逗号分隔字符串）
     */
    @Size(max = 500, message = "支持工艺类型长度不能超过500个字符")
    private String supportedProcessTypes;

    /**
     * 工位描述，记录工位的用途或备注（可选）
     */
    @Size(max = 500, message = "工位描述长度不能超过500个字符")
    private String description;
}